2. Getting Started

2.1 Downloading and Installing

Grails를 시작하고 작동시키기 위해서 처음해야 하는 일은 배포본을 설치하는 것이다. 천천히 다음 단계들을 따라하라.

만약 Grails가 정상적으로 동작한다면 당신은 터미널 윈도우에서 grails를 타이핑하고서, 다음과 같은 결과물을 볼 수 있다.


Welcome to Grails 1.0 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: /Developer/grails-1.0
No script name specified. Use 'grails help' for more info

2.2 Creating an Application

Grails 어플리케이션을 생성하려면 먼저 다음과 같은 grails 명령어의 사용법에 익숙해질 필요가 있다.

grails [command name]

이제 create-app 명령어를 사용하여 어플리케이션을 생성할 수 있다.

tc. grails create-app helloworld

이 명령어는 현재 디렉토리 위치에 프로젝트를 담고있는 새로운 디렉토리를 만들어 줄 것이다. 당신은 이제 터미널에서 이 디렉토리를 돌아다녀야 한다:


cd helloworld

2.3 A Hello World Example

전형적인 "hello world!" 예제 프로그램을 구현하기 위해서는 create-controller 명령어를 사용한다.


grails create-controller hello  

이것은 grails-app/controllers 디렉토리 안에 HelloController.groovy 라는 새로운 컨트롤러를 생성할 것이다(더 많은 정보를 원한다면 컨트롤러 절을 보라.)

컨트롤러는 웹 요청들을 처리할 수 있다. 그리고 다음과 같이 구현하여 "hello world!"라는 메시지를 출력할 수 있다.

class HelloController {

def world = { render "Hello World!" } }

다했다. 이제 또 다른 명령어인 run-app로 컨테이너를 실행시킨다.


grails run-app

이 명령어로 8080포트로 서버를 실행시키고나서 http://localhost:8080/helloworld 와 같은 URL로 해당 어플리케이션에 접속할 수 있다.

결과는 다음의 스크린샷과 같이 나올 것이다.

이 것은 web-app/index.gsp 로 렌더링된 Grails의 소개페이지이다. 이 페이지에는 컨트롤러들이 보여질 것이고 컨트롤러의 링크를 클릭하면 브라우저 윈도우에 "Hello World!"라고 출력되는 것을 보게 될 것이다.

2.4 Getting Set-up in an IDE

IntelliJ IDEA

현재 굉장히 성숙하고, 풍부한 기능을 가진 Groovy&Grails IDE는 IntelliJ IDEA 7.0JetGroovy 플러그인이다. Grails 개발팀은 커다란 프로젝트를 위해서 다른 IDE 환경을 넘어선 IDEA를 추천한다.

TextMate

Grails는 단순함에 초첨이 맞춰져 있기 때문에 단순한 텍스트 편집기를 사용하는 것도 가능하다. Mac의 TextMate 에는 우수한 Groovy/Grails 번들을 가졌다. Texmate bundles SVN에서 이용할 수 있다.

Eclipse

Eclipse 위해서 여기에 또 문법 강조와 코드 완성등을 해주는 Groovy Eclipse Plugin 이 있다.

이 Groovy 이클립스 플러그인은 자주 변한다. 그 변화의 자세한 사항은 Grails 위키에서 알 수 있다.

Grails는 자동적으로 이클립스의 .project 파일과 classpath 파일을 만든다. 그리고 "Package Explorer"창에서 오른쪽 버튼을 클릭을 하여 "Import"를 선택한 후 "Existing projext into Workspace"에서 그레일즈 프로젝트가 있는 곳을 "Browse"하는 것으로 Grails 프로젝트를 추가시킬 수 있다.

그리고 "Finish"를 누른 다음에 나오는 "Ok"를 클릭하면 프로젝트는 설치된다.

또한 Grails는 적당한 이클립스 실행 설정을 자동으로 셋업한다. 이것은 이클립스의 "Run"메뉴를 통해서 접근이 가능하다.

2.5 Convention over Configuration

Grails는 "설정보다 관례"를 사용한다. 이 것은 이름과 파일의 위치를 명시적으로 설정하는 하지 않고 Grails가 제공하는 디렉토리 구조에 익숙해져야 하는 것을 의미한다.

여기에 Grails의 상세 내역과 관련된 링크가 있다.

2.6 Running an Application

Grails 어플리케이션은 run-app 명령어를 사용해서 Jetty 서버에서 돌아갈 수 있다. Jetty서버는 기본적으로 8080포트를 사용한다.

grails run-app

server.port 인자를 이용해서 다른 포트를 사용할 수 있다.

grails -Dserver.port=8090 run-app

run-app 에 대한 더 많은 정보는 레퍼런스 가이드에서 얻을 수 있다.

2.7 Testing an Application

Grails의 create-*형식의 명령어들은 test/integration 디렉토리에 통합 테스트들을 자동적으로 만든다. 물론 테스트 에 대한 장에서 설명하는 정보와 테스트 로직에 부합하도록 내용을 채우는 일은 당신의 몫이다. 하지만 만약 테스트를 실행하기를 원한다면 당신은 다음과 같이 test-app 명령어를 사용할 수 있다.

grails test-app

Grails는 test-app 명령어와 동일하게 동작하는 Ant의 build.xml 파일을 자동으로 만들어준다.

ant test

이것을 통해 CruiseControl같은 지속적 통합(continuous integration) 플랫폼을 유용하게 사용할 수 있다

2.8 Deploying an Application

Grails 어플리케이션은 WAR(Web Application Archieves) 파일로 설치할 수 있다. war 명령어를 사용하여 만들 수 있다:

grails war

프로젝트 루트에 WAR파일이 생성될 것이다. 이제 각 컨테이너의 사용법에 따라 설치할 수 있다.

결코 Grails의 run-app 명령을 사용하여 실제로 서비스하지 말아라. Grails의 이 명령어는 서버 성능이나 확장성이 중요한 런타임에도 자동으로 reload 하도록 설정돼 있다.

Grails를 설치할때에는 컨테이너의 JVM에 충분히 메모리를 할당하고 -server 옵션을 사용해야 한다. 다음은 권장하는 VM 옵션들이다.

-server -Xmx512M

2.9 Supported Java EE Containers

Grails는 다음과 같이 꽤 많은 컨테이너들을 지원한다.

몇몇 컨테이너들는 버그가 있지만 대부분의 경우에는 잘 동작한다. 설치에 관한 문제는 Grails 위키에서 찾을 수 있다.

Some containers have bugs however, which in most cases can be worked around. A list of known deployment issues can be found on the Grails wiki.

2.10 Creating Artefacts

Grails는 create-controller, create-domain-class 등과 같은 편리한 명령어를 지원한다. 이 것들은 컨트롤러를 생성하거나 다른 타입의 아티펙트들을 만들어줄 것이다.

여기에 있는 것이 전부가 아니다. IDE나 익숙한 텍스트 편집기를 바로 사용하는 것도 쉽다.

예를 들어 다음과 같이 어플리케이션을 만들 때 기본적으로 필요한 도메인 모델을 만든다:

grails create-domain-class book

도메인 클래스가 grails-app/domain/Book.groovy 파일이 만들어진다. 그 내용은 다음과 같다:

class Book {	
}

Grails에는 많은 create-* 와 같은 명령어가 있다. 이 것들은 명령줄 레퍼런스 가이드에서 찾아볼 수 있다.

2.11 Generating an Application

Grails를 시작할 때 어플리케이션의 뼈대를 만들어주는 스케폴드 라는 특징은 매우 유용하다. generate-* 명령어들 중에서 하나를 사용하여 만들 수 있고 generate-all 을 사용하면 관계된 컨트롤러 가 생성될 것이다.

grails generate-all Book